#ifndef CONSULTARCAJAHANDLER_H_
#define CONSULTARCAJAHANDLER_H_

#include <signal.h>
#include <assert.h>
#include <sstream>

#include <EventHandler.h>
#include <Semaforo.h>
#include <MemoriaCompartida.h>
#include <Logger.h>

#include <Caja.h>

class ConsultarCajaHandler : public EventHandler {
private:
	const Caja& m_Caja;
	
public:
	ConsultarCajaHandler (const Caja& caja) : m_Caja(caja) {
	}

	~ConsultarCajaHandler () {
	}

	virtual int handleSignal ( int signum ) {
		assert ( signum == SIGINT );
		try
		{
			std::stringstream srecaudacion;
			srecaudacion << "La recaudacion de la caja es de " << m_Caja.obtenerRecaudacion();
			Logger::getInstance()->info(srecaudacion.str());
		}
		catch(const BaseException& e)
		{
			std::string eMsg = "Ocurrio un error al consultar la caja:";
			eMsg.append(e.what());
			Logger::getInstance()->error(eMsg);
		}
		
		return 0;
	}
};

#endif /* SIGINT_HANDLER_H_ */
